/**
 * OSS 工具函数
 */

/**
 * 生成 UUID
 * @returns UUID 字符串
 */
export function generateUUID(): string {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    const r = Math.random() * 16 | 0
    const v = c === 'x' ? r : (r & 0x3 | 0x8)
    return v.toString(16)
  })
}

/**
 * 获取文件扩展名
 * @param filename 文件名
 * @returns 扩展名（包含点号）
 */
export function getFileExtension(filename: string): string {
  const lastDotIndex = filename.lastIndexOf('.')
  if (lastDotIndex === -1) {
    return ''
  }
  return filename.substring(lastDotIndex)
}

/**
 * 生成 OSS 文件 key
 * @param file 文件对象
 * @param prefix 前缀目录（可选）
 * @returns OSS key
 */
export function generateOssKey(file: File, prefix?: string): string {
  const uuid = generateUUID()
  const ext = getFileExtension(file.name)
  const key = `${uuid}${ext}`
  
  if (prefix) {
    // 确保前缀以斜杠结尾
    const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`
    return `${normalizedPrefix}${key}`
  }
  
  return key
}

/**
 * 获取 OSS 完整 URL
 * @param key OSS key
 * @returns 完整的文件 URL
 */
export function getOssUrl(key: string): string {
  const ossDomain = import.meta.env.VITE_OSS_DOMAIN
  // 确保域名不以斜杠结尾，key 不以斜杠开头
  const normalizedDomain = ossDomain.endsWith('/') ? ossDomain.slice(0, -1) : ossDomain
  const normalizedKey = key.startsWith('/') ? key.slice(1) : key
  
  return `${normalizedDomain}/${normalizedKey}`
}